package com.xinyin.aiqinhaiback.Utils;

import java.util.*;

public class PortGroupingUtil {

	/**
	 * 将 IP 地址和端口号分组，返回以 IP 地址为 key，端口号集合为 value 的 Map。
	 *
	 * @param ipPortList IP 地址和端口号的列表，格式为 "ip:port"
	 * @return 分组后的 Map
	 */
	public static Map<String, Set<Integer>> groupPortsByIp(List<String> ipPortList) {
		Map<String, Set<Integer>> ipPortMap = new HashMap<>();

		for (String ipPort : ipPortList) {
			// 拆分 IP 地址和端口号
			String[] parts = ipPort.split(":");
			if (parts.length != 2) {
				throw new IllegalArgumentException("Invalid IP:Port format: " + ipPort);
			}

			String ip = parts[0];
			int port = Integer.parseInt(parts[1]);

			// 如果 IP 地址不存在，创建一个新的 Set
			ipPortMap.putIfAbsent(ip, new HashSet<>());

			// 将端口号添加到对应的 IP 地址集合中
			ipPortMap.get(ip).add(port);
		}

		return ipPortMap;
	}

	public static void main(String[] args) {
		// 示例数据
		List<String> ipPortList = Arrays.asList(
				"192.168.1.1:8080",
				"192.168.1.2:8081",
				"192.168.1.1:8082",
				"192.168.1.3:8080",
				"192.168.1.2:8083"
		);

		// 调用工具类方法
		Map<String, Set<Integer>> result = groupPortsByIp(ipPortList);

		// 输出结果
		for (Map.Entry<String, Set<Integer>> entry : result.entrySet()) {
			System.out.println("IP: " + entry.getKey() + ", Ports: " + entry.getValue());
		}
	}
}
